home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / AGNUS / SRC / NICEWIN / NICEWIN.SPP < prev   
Encoding:
Text File  |  1996-12-28  |  2.1 KB  |  84 lines

  1. ; Dieses kleine resistente Programm hängt sich in den VDI-Vektor ein
  2. ; und verändert einige v_gtext()-Aufrufe derart, das die Fensterele-
  3. ; mente etwas ansehnlicher werden.
  4. ; Autor: Volker Hemsen
  5. ; System: ATARI GEM-TOS
  6. ; Sprache: Motorola 68k Assembler
  7. ; Compiler: GNU C 2.72, ASMTRANS
  8.  
  9. XBRA    EQU        $58425241
  10. NWIN    EQU        $4e57696e
  11. VEC    EQU        $88
  12.  
  13.     TEXT
  14. res_start:    bra.s    main
  15.  
  16.         dc.l    XBRA
  17. xbra:        dc.l    NWIN
  18. oldvec:        dc.l    0
  19. newvec:        lea    regsave(pc),a0    ;Register sichern
  20.         movem.l    d0-d2/a1,(a0)
  21.         cmp.w    #115,d0        ;VDI-Trap?
  22.         bne.s    vec_end
  23.         move.l    d1,a1        ;Zeiger auf VDI-PB
  24.         move.l    (a1),a0        ;contrl-Zeiger holen
  25.         cmp.w    #8,(a0)        ;v_gtext() ?
  26.         bne.s    vec_end
  27.         cmp.w    #1,6(a0)    ;String mit einem Zeichen Länge?
  28.         bne.s    vec_end
  29.         move.l    4(a1),a0    ;Zeichen prüfen
  30.         move.w    (a0),d2
  31.         lea    table(pc),a1
  32. table_loop:    movem.w    (a1)+,d0/d1
  33.         tst.w    d0
  34.         beq.s    vec_end
  35.         cmp.w    d2,d0
  36.         bne.s    table_loop
  37.         move.w    d1,(a0)
  38. vec_end:    lea    regsave(pc),a0    ; Register wieder herstellen
  39.         movem.l    (a0),d0-d2/a1
  40.         move.l    oldvec(pc),a0    ; und VDI-Trap anspringen
  41.         jmp    (a0)
  42. table:        dc.w    5,45        ;Schließenfeld
  43.         dc.w    6,241        ;Größenfeld
  44.         dc.w    7,222        ;Vollfeld
  45.         dc.w    0        ;Ende
  46. regsave:    ds.l    3        ;Platz für Register
  47. res_end:
  48.  
  49. ; NWIN-XBRA-Kennung suchen und aus Liste austragen
  50. instvec:    lea    (VEC).w,a2        ;Anfang der Liste
  51.         move.l    (a2),a0
  52. reinstloop:    cmp.l    #XBRA,-12(a0)    ;XBRA-Kennung?
  53.         bne    vecerr
  54.         cmp.l    #NWIN,-8(a0)
  55.         beq.s    vecfound
  56.         move.l    a0,a2        ;alte Adresse merken
  57.         move.l    -4(a0),a0    ;neue Adresse lesen
  58.         bra    reinstloop
  59. vecfound:    move.l    -4(a0),(a2)    ;und austragen
  60. ; eigene Routine in 'trap 2'-Vektor hängen
  61. vecerr:        lea    (VEC).w,a1
  62.         lea    oldvec(pc),a0
  63.         move.l    (a1),(a0)
  64.         lea    newvec(pc),a0
  65.         move.l    a0,(a1)
  66.         rts
  67.  
  68. ; Hauptroutine: alten Vektoreintrag entfernen, neuen eintragen
  69. ; und dann den oberen Programmcode resident machen
  70. main:        pea    instvec(pc)
  71.         move.w    #38,-(sp)    ;Supexec()
  72.         trap    #14
  73.         addq.l    #6,sp
  74.         lea    res_end(pc),a0
  75.         lea    res_start(pc),a1
  76.         sub.l    a1,a0
  77.         adda.l    #$100,a0
  78.         clr.w    -(sp)        ;Ptermres()
  79.         move.l    a0,-(sp)
  80.         move.w    #$31,-(sp)
  81.         trap    #1
  82.     END
  83.  
  84.